{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 导入数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import pandas as pd\n",
    "\n",
    "# 导入数据函数\n",
    "def load_Titanic_data(data_path = './TitannicData/'):\n",
    "    train_path = os.path.join(data_path, 'train.csv')\n",
    "    test_path = os.path.join(data_path, 'test.csv')\n",
    "    gender_path = os.path.join(data_path, 'gender_submission.csv')\n",
    "    return pd.read_csv(train_path),pd.read_csv(test_path),pd.read_csv(gender_path)\n",
    "\n",
    "train, test, gender = load_Titanic_data()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 查看数据分布特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked  \n",
       "0      0         A/5 21171   7.2500   NaN        S  \n",
       "1      0          PC 17599  71.2833   C85        C  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3      0            113803  53.1000  C123        S  \n",
       "4      0            373450   8.0500   NaN        S  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 粗略估计不同特征的生存率"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 'Pclass' 船舱等级"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0.629630</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>0.472826</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>0.242363</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Pclass  Survived\n",
       "0       1  0.629630\n",
       "1       2  0.472826\n",
       "2       3  0.242363"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 不同等级船舱\n",
    "train[['Pclass', 'Survived']].groupby(['Pclass'], as_index=False).mean().sort_values(by='Survived', ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 不同等级船舱生存率差异很大， 一等船舱的生存率最大，达到63%， 三等舱生存率最小。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 'Sex' 性别特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>female</td>\n",
       "      <td>0.742038</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>male</td>\n",
       "      <td>0.188908</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex  Survived\n",
       "0  female  0.742038\n",
       "1    male  0.188908"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 性别统计数据\n",
    "train[['Sex', 'Survived']].groupby(['Sex'], as_index=False).mean().sort_values(by='Survived', ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 女性生存率远高于男性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>False</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>True</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>True</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>True</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>False</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name    Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris  False  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...   True  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina   True  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)   True  35.0      1   \n",
       "4                           Allen, Mr. William Henry  False  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked  \n",
       "0      0         A/5 21171   7.2500   NaN        S  \n",
       "1      0          PC 17599  71.2833   C85        C  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3      0            113803  53.1000  C123        S  \n",
       "4      0            373450   8.0500   NaN        S  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train['Sex'] = train['Sex'] == 'female'\n",
    "test['Sex'] = test['Sex'] == 'female'\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 'Age' 年龄特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x19e962b0>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 年龄分布\n",
    "pd.crosstab(train.Age,train.Survived).plot.bar(stacked=True,figsize=(12,5),color=['#4169E1','#FF00FF'])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age_cat</th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5</td>\n",
       "      <td>0.704545</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>10</td>\n",
       "      <td>0.428571</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>40</td>\n",
       "      <td>0.423237</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>55</td>\n",
       "      <td>0.375000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20</td>\n",
       "      <td>0.359223</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>65</td>\n",
       "      <td>0.125000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Age_cat  Survived\n",
       "0       5  0.704545\n",
       "1      10  0.428571\n",
       "3      40  0.423237\n",
       "4      55  0.375000\n",
       "2      20  0.359223\n",
       "5      65  0.125000"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "# 分割年龄段\n",
    "# 按上图生存率变化，将乘客分为婴幼儿0-5、少年5-16，青年16-30， 中年30-50， 老年A50-65，老年B65+\n",
    "train['Age_cat'] = pd.cut(train['Age'],bins = [0., 5, 16, 30,50, 65,np.inf], labels = [5,10,20,40,55,65])\n",
    "Age_catDF = train[['Age_cat', 'Survived']].groupby(['Age_cat'], as_index=False).mean()\n",
    "Age_catDF.sort_values(by='Survived', ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 可以看到，相邻年龄段的生存率跳跃较大，分区比较合理\n",
    "* 婴幼儿及16岁以下的少年生存率较高，65岁以上老年人以及16-30岁人群生存率较低\n",
    "* 20-30年龄段的低生存率有点出乎意料，不一定仅仅是年龄引起的，有可能是其他因素"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 不同年龄段在船舱中的分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>class1</th>\n",
       "      <th>class2</th>\n",
       "      <th>class3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.666667</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.571429</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>0.285714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>0.730769</td>\n",
       "      <td>0.426667</td>\n",
       "      <td>0.225275</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>0.674419</td>\n",
       "      <td>0.467742</td>\n",
       "      <td>0.161290</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>55</th>\n",
       "      <td>0.485714</td>\n",
       "      <td>0.230769</td>\n",
       "      <td>0.125000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>65</th>\n",
       "      <td>0.250000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      class1    class2    class3\n",
       "5   0.666667  1.000000  0.571429\n",
       "10  1.000000  0.750000  0.285714\n",
       "20  0.730769  0.426667  0.225275\n",
       "40  0.674419  0.467742  0.161290\n",
       "55  0.485714  0.230769  0.125000\n",
       "65  0.250000  0.000000  0.000000"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Age_Pclass1 = train[['Age_cat', 'Pclass', 'Survived']].groupby([ 'Age_cat','Pclass'], as_index=False).count()\n",
    "Age_Pclass1 = pd.DataFrame(np.array(Age_Pclass1['Survived']).reshape(6,3), columns = ['class1', 'class2', 'class3'], index = [5,10,20,40,55,65])\n",
    "\n",
    "Age_Pclass = train[['Age_cat', 'Pclass', 'Survived']].groupby([ 'Age_cat','Pclass'], as_index=False).mean()\n",
    "Age_Pclass = pd.DataFrame(np.array(Age_Pclass['Survived']).reshape(6,3), columns = ['class1', 'class2', 'class3'], index = [5,10,20,40,55,65])\n",
    "Age_Pclass  #不同年龄段不同船舱中的生存率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>class1</th>\n",
       "      <th>class2</th>\n",
       "      <th>class3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>3</td>\n",
       "      <td>13</td>\n",
       "      <td>28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>6</td>\n",
       "      <td>8</td>\n",
       "      <td>42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>52</td>\n",
       "      <td>75</td>\n",
       "      <td>182</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>86</td>\n",
       "      <td>62</td>\n",
       "      <td>93</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>55</th>\n",
       "      <td>35</td>\n",
       "      <td>13</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>65</th>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    class1  class2  class3\n",
       "5        3      13      28\n",
       "10       6       8      42\n",
       "20      52      75     182\n",
       "40      86      62      93\n",
       "55      35      13       8\n",
       "65       4       2       2"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Age_Pclass1   # 不同年龄段在各船舱中的人数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1c3c1fd0>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(Age_catDF.Age_cat.values,Age_catDF.Survived, label = 'all classes', marker = 'o', markersize = 10)\n",
    "plt.plot(Age_Pclass.index, Age_Pclass.class1, label = 'class 1')\n",
    "plt.plot(Age_Pclass.index, Age_Pclass.class2, label = 'class 2')\n",
    "plt.plot(Age_Pclass.index, Age_Pclass.class3, label = 'class 3')\n",
    "\n",
    "plt.legend(loc = 'upper right')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 在同一等级船舱中，生存率基本随年龄增长而下降"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1c1e59e8>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "Age_Pclass1.plot.bar()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 20-30 年龄段生存率的大幅降低主要是由于该年龄段3等舱人数众多\n",
    "* 30-50 年龄段生存率上升主要是由于其一等舱人数较多"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 同行人特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[<matplotlib.axes._subplots.AxesSubplot object at 0x000000001C1ED2B0>,\n",
       "        <matplotlib.axes._subplots.AxesSubplot object at 0x000000001C3DA898>]],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#from pandas.plotting import scatter_matrix\n",
    "#scatter_matrix(train[['SibSp', 'Parch','Pclass','Survived']], figsize = (12,8))\n",
    "train[['SibSp', 'Parch']].hist(figsize = (12,8))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 由于数据量少，且分布不均匀，因此大致分成两类：单独出行（False）和有同行人（True）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Age_cat</th>\n",
       "      <th>Accompany</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>False</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "      <td>20</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>True</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "      <td>40</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>True</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "      <td>20</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>True</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "      <td>40</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>False</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "      <td>40</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name    Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris  False  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...   True  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina   True  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)   True  35.0      1   \n",
       "4                           Allen, Mr. William Henry  False  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked Age_cat  Accompany  \n",
       "0      0         A/5 21171   7.2500   NaN        S      20       True  \n",
       "1      0          PC 17599  71.2833   C85        C      40       True  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S      20      False  \n",
       "3      0            113803  53.1000  C123        S      40       True  \n",
       "4      0            373450   8.0500   NaN        S      40      False  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train['Accompany'] = (train['SibSp']+ train['Parch'])> 0\n",
    "test['Accompany'] = (test['SibSp']+ test['Parch'])> 0\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 登船码头"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>C</td>\n",
       "      <td>0.553571</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Q</td>\n",
       "      <td>0.389610</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>S</td>\n",
       "      <td>0.336957</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Embarked  Survived\n",
       "0        C  0.553571\n",
       "1        Q  0.389610\n",
       "2        S  0.336957"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train[['Embarked','Survived']].groupby([ 'Embarked'], as_index=False).mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 不确定码头对生存率的影响，排除此项数据"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 'Cabin', 'Ticket', 'Fare' 列"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 'Ticket'为文本数据，不是关键特征。‘Fare’与船舱等级‘Pclass’直接相关，不是独立特征。‘Cabin’缺失大部分数据，现存数据绝大部分为一二等级船舱编号，与‘Pclass’相关，不做分析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 缺失数据补齐"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 14 columns):\n",
      " #   Column       Non-Null Count  Dtype   \n",
      "---  ------       --------------  -----   \n",
      " 0   PassengerId  891 non-null    int64   \n",
      " 1   Survived     891 non-null    int64   \n",
      " 2   Pclass       891 non-null    int64   \n",
      " 3   Name         891 non-null    object  \n",
      " 4   Sex          891 non-null    bool    \n",
      " 5   Age          714 non-null    float64 \n",
      " 6   SibSp        891 non-null    int64   \n",
      " 7   Parch        891 non-null    int64   \n",
      " 8   Ticket       891 non-null    object  \n",
      " 9   Fare         891 non-null    float64 \n",
      " 10  Cabin        204 non-null    object  \n",
      " 11  Embarked     889 non-null    object  \n",
      " 12  Age_cat      714 non-null    category\n",
      " 13  Accompany    891 non-null    bool    \n",
      "dtypes: bool(2), category(1), float64(2), int64(5), object(4)\n",
      "memory usage: 79.5+ KB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 418 entries, 0 to 417\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  418 non-null    int64  \n",
      " 1   Pclass       418 non-null    int64  \n",
      " 2   Name         418 non-null    object \n",
      " 3   Sex          418 non-null    bool   \n",
      " 4   Age          332 non-null    float64\n",
      " 5   SibSp        418 non-null    int64  \n",
      " 6   Parch        418 non-null    int64  \n",
      " 7   Ticket       418 non-null    object \n",
      " 8   Fare         417 non-null    float64\n",
      " 9   Cabin        91 non-null     object \n",
      " 10  Embarked     418 non-null    object \n",
      " 11  Accompany    418 non-null    bool   \n",
      "dtypes: bool(2), float64(2), int64(4), object(4)\n",
      "memory usage: 33.6+ KB\n"
     ]
    }
   ],
   "source": [
    "test.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 补齐‘Age’列数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>Age_cat</th>\n",
       "      <th>Accompany</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "      <td>22.0</td>\n",
       "      <td>20</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>38.0</td>\n",
       "      <td>40</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>True</td>\n",
       "      <td>26.0</td>\n",
       "      <td>20</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>35.0</td>\n",
       "      <td>40</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "      <td>35.0</td>\n",
       "      <td>40</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>886</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>False</td>\n",
       "      <td>27.0</td>\n",
       "      <td>20</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>887</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>19.0</td>\n",
       "      <td>20</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>888</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>True</td>\n",
       "      <td>28.0</td>\n",
       "      <td>20</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>889</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>26.0</td>\n",
       "      <td>20</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>890</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "      <td>32.0</td>\n",
       "      <td>40</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>891 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Survived  Pclass    Sex   Age Age_cat  Accompany\n",
       "0           0       3  False  22.0      20       True\n",
       "1           1       1   True  38.0      40       True\n",
       "2           1       3   True  26.0      20      False\n",
       "3           1       1   True  35.0      40       True\n",
       "4           0       3  False  35.0      40      False\n",
       "..        ...     ...    ...   ...     ...        ...\n",
       "886         0       2  False  27.0      20      False\n",
       "887         1       1   True  19.0      20      False\n",
       "888         0       3   True  28.0      20       True\n",
       "889         1       1  False  26.0      20      False\n",
       "890         0       3  False  32.0      40      False\n",
       "\n",
       "[891 rows x 6 columns]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "drop_list = ['PassengerId','Name','SibSp','Parch','Ticket','Fare','Cabin','Embarked']\n",
    "\n",
    "from sklearn.impute import SimpleImputer\n",
    "from sklearn.base import BaseEstimator, TransformerMixin\n",
    "\n",
    "def data_clean(df_in):\n",
    "    df_out = df_in[['Age']]\n",
    "    imputer = SimpleImputer(strategy='median')\n",
    "    X = imputer.fit_transform(df_out)\n",
    "    #df_out = pd.DataFrame(X, columns = df_out.columns, index = df_out.index)\n",
    "    df_in['Age'] = X[:,0]\n",
    "    df_in['Age_cat'] = pd.cut(X[:,0],bins = [0., 5, 16, 30,50, 65,np.inf], labels = [5,10,20,40,55,65])\n",
    "    \n",
    "    return df_in.drop(drop_list, axis = 1)\n",
    "\n",
    "train_final = data_clean(train)\n",
    "test_final = data_clean(test)\n",
    "\n",
    "train_final"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>Accompany</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "      <td>22.0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>38.0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>True</td>\n",
       "      <td>26.0</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>35.0</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "      <td>35.0</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Pclass    Sex   Age  Accompany\n",
       "0       3  False  22.0       True\n",
       "1       1   True  38.0       True\n",
       "2       3   True  26.0      False\n",
       "3       1   True  35.0       True\n",
       "4       3  False  35.0      False"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_X = train_final.drop(['Survived','Age_cat'],axis = 1) # 暂时不考虑‘Age_cat’数据\n",
    "train_X.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Survived\n",
       "0     False\n",
       "1      True\n",
       "2      True\n",
       "3      True\n",
       "4     False"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_Y = train_final[['Survived']]==1\n",
    "train_Y.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_X = test_final.drop(['Age_cat'],axis = 1) # 暂时不考虑‘Age_cat’数据\n",
    "test_Y = gender[['Survived']]==1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 特征缩放"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>Accompany</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "      <td>0.271174</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>0.472229</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>True</td>\n",
       "      <td>0.321438</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>0.434531</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "      <td>0.434531</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>886</th>\n",
       "      <td>2</td>\n",
       "      <td>False</td>\n",
       "      <td>0.334004</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>887</th>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>0.233476</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>888</th>\n",
       "      <td>3</td>\n",
       "      <td>True</td>\n",
       "      <td>0.346569</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>889</th>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>0.321438</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>890</th>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "      <td>0.396833</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>891 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Pclass    Sex       Age  Accompany\n",
       "0         3  False  0.271174       True\n",
       "1         1   True  0.472229       True\n",
       "2         3   True  0.321438      False\n",
       "3         1   True  0.434531       True\n",
       "4         3  False  0.434531      False\n",
       "..      ...    ...       ...        ...\n",
       "886       2  False  0.334004      False\n",
       "887       1   True  0.233476      False\n",
       "888       3   True  0.346569       True\n",
       "889       1  False  0.321438      False\n",
       "890       3  False  0.396833      False\n",
       "\n",
       "[891 rows x 4 columns]"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.preprocessing import MinMaxScaler \n",
    "\n",
    "scaler = MinMaxScaler ()\n",
    "train_X['Age'] = scaler.fit_transform(train_X[['Age']])[:,0]\n",
    "train_X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>Accompany</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "      <td>0.452723</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3</td>\n",
       "      <td>True</td>\n",
       "      <td>0.617566</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>False</td>\n",
       "      <td>0.815377</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "      <td>0.353818</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3</td>\n",
       "      <td>True</td>\n",
       "      <td>0.287881</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>413</th>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "      <td>0.353818</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>414</th>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>0.512066</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>415</th>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "      <td>0.505473</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>416</th>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "      <td>0.353818</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>417</th>\n",
       "      <td>3</td>\n",
       "      <td>False</td>\n",
       "      <td>0.353818</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>418 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Pclass    Sex       Age  Accompany\n",
       "0         3  False  0.452723      False\n",
       "1         3   True  0.617566       True\n",
       "2         2  False  0.815377      False\n",
       "3         3  False  0.353818      False\n",
       "4         3   True  0.287881       True\n",
       "..      ...    ...       ...        ...\n",
       "413       3  False  0.353818      False\n",
       "414       1   True  0.512066      False\n",
       "415       3  False  0.505473      False\n",
       "416       3  False  0.353818      False\n",
       "417       3  False  0.353818       True\n",
       "\n",
       "[418 rows x 4 columns]"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_X['Age'] = scaler.fit_transform(test_X[['Age']])[:,0]\n",
    "test_X"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 训练模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### SGD 分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\utils\\validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(**kwargs)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\utils\\validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(**kwargs)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\utils\\validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(**kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0.75084175, 0.81481481, 0.77441077])"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# SGD 梯度下降 分类器\n",
    "from sklearn.linear_model import SGDClassifier\n",
    "from sklearn.model_selection import cross_val_score\n",
    "\n",
    "sgd_clf = SGDClassifier(random_state = 42)\n",
    "cross_val_score(sgd_clf, train_X, train_Y, cv=3, scoring=\"accuracy\")  # 对sgd_clf分类器精度作评估"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\utils\\validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(**kwargs)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\utils\\validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(**kwargs)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\utils\\validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(**kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[498,  51],\n",
       "       [145, 197]], dtype=int64)"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import cross_val_predict\n",
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "y_train_pred = cross_val_predict(sgd_clf, train_X, train_Y, cv=3) \n",
    "confusion_matrix(train_Y, y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\utils\\validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(**kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.8024691358024691"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sgd_clf.fit(train_X, train_Y)\n",
    "sgd_clf.score(train_X, train_Y)\n",
    "#Y_pred = sgd_clf.predict(X_test)\n",
    "#acc_svc = round(svc.score(X_train, Y_train) * 100, 2)\n",
    "#acc_svc"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 准确度80.2%"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### LogisticRegression模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\utils\\validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(**kwargs)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\utils\\validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(**kwargs)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\utils\\validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(**kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0.77104377, 0.78787879, 0.77441077])"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "\n",
    "lr_clf = LogisticRegression()\n",
    "cross_val_score(lr_clf, train_X, train_Y, cv=3, scoring=\"accuracy\")  # 对sgd_clf分类器精度作评估"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\utils\\validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  return f(**kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[470,  79],\n",
       "       [103, 239]], dtype=int64)"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr_clf.fit(train_X, train_Y)\n",
    "y_train_pred2 = lr_clf.predict(train_X) \n",
    "confusion_matrix(train_Y, y_train_pred2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7957351290684624"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr_clf.score(train_X, train_Y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 准确度为79.6%"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### KNN模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\program files\\python37\\lib\\site-packages\\ipykernel_launcher.py:4: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  after removing the cwd from sys.path.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.8361391694725028"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "\n",
    "knn = KNeighborsClassifier(n_neighbors = 3)\n",
    "knn.fit(train_X, train_Y)\n",
    "knn.score(train_X, train_Y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 准确度为84%"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 随机森林模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\program files\\python37\\lib\\site-packages\\ipykernel_launcher.py:4: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  after removing the cwd from sys.path.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.8855218855218855"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "\n",
    "random_forest = RandomForestClassifier(n_estimators=10)\n",
    "random_forest.fit(train_X, train_Y)\n",
    "random_forest.score(train_X, train_Y) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 准确度达88.6%"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 随机森林模型调优"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:531: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  estimator.fit(X_train, y_train, **fit_params)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:552: FitFailedWarning: Estimator fit failed. The score on this train-test partition for these parameters will be set to nan. Details: \n",
      "Traceback (most recent call last):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 531, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 392, in fit\n",
      "    for i, t in enumerate(trees))\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 1029, in __call__\n",
      "    if self.dispatch_one_batch(iterator):\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 847, in dispatch_one_batch\n",
      "    self._dispatch(tasks)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 765, in _dispatch\n",
      "    job = self._backend.apply_async(batch, callback=cb)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 206, in apply_async\n",
      "    result = ImmediateResult(func)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\_parallel_backends.py\", line 570, in __init__\n",
      "    self.results = batch()\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in __call__\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\joblib\\parallel.py\", line 253, in <listcomp>\n",
      "    for func, args, kwargs in self.items]\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\ensemble\\_forest.py\", line 168, in _parallel_build_trees\n",
      "    tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 894, in fit\n",
      "    X_idx_sorted=X_idx_sorted)\n",
      "  File \"c:\\program files\\python37\\lib\\site-packages\\sklearn\\tree\\_classes.py\", line 279, in fit\n",
      "    raise ValueError(\"max_features must be in (0, n_features]\")\n",
      "ValueError: max_features must be in (0, n_features]\n",
      "\n",
      "  FitFailedWarning)\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_search.py:765: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  self.best_estimator_.fit(X, y, **fit_params)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=3, estimator=RandomForestClassifier(random_state=42),\n",
       "             param_grid=[{'max_features': [2, 4, 6, 8],\n",
       "                          'n_estimators': [3, 10, 50, 100, 200, 300]}],\n",
       "             return_train_score=True, scoring='neg_mean_squared_error')"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "# 需要调优的模型参数（随机森林）\n",
    "param_grid = [\n",
    "    {'n_estimators': [3, 10, 50, 100, 200, 300], 'max_features': [2, 4, 6, 8]},\n",
    "  ]\n",
    "\n",
    "forest_reg = RandomForestClassifier(random_state=42)\n",
    "grid_search = GridSearchCV(forest_reg, param_grid, cv=3,\n",
    "                           scoring='neg_mean_squared_error', return_train_score=True)\n",
    "grid_search.fit(train_X, train_Y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RandomForestClassifier(max_features=2, n_estimators=50, random_state=42)"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid_search.best_estimator_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\program files\\python37\\lib\\site-packages\\ipykernel_launcher.py:2: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
      "  \n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.8945005611672279"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "best_estimator = RandomForestClassifier(max_features=2, n_estimators=50, random_state=42)\n",
    "best_estimator.fit(train_X, train_Y)\n",
    "best_estimator.score(train_X, train_Y) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 可以得到准确度为89.5%"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 预测测试集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8301435406698564"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gender['Survived']=gender['Survived']==1\n",
    "\n",
    "y_pred_test = best_estimator.predict(test_X)\n",
    "y_test = gender.drop('PassengerId',axis = 1)\n",
    "best_estimator.score(test_X, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 测试集上的准确率为 83%"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
